/**
* 左边菜单
*/ 
<template>
  <el-menu
    default-active="2"
    :collapse="collapsed"
    collapse-transition
    router
    :default-active="$route.path"
    unique-opened
    class="el-menu-vertical-demo"
    background-color="#334157"
    text-color="#fff"
    active-text-color="#ffd04b"
  >
    <div class="logobox">
      <img class="logoimg" src="../assets/img/logo.png" alt="" />
    </div>
    <el-submenu
      v-for="menu in allmenu"
      :key="menu.menuid"
      :index="menu.menuname"
    >
      <template slot="title">
        <i :class="menu.icon"></i>
        <span>{{ menu.menuname }}</span>
      </template>
      <el-menu-item-group>
        <el-menu-item
          v-for="chmenu in menu.menus"
          :index=" chmenu.url"
          :key="chmenu.menuid"
        >
          <i  :class="chmenu.icon"></i>
          <span>{{ chmenu.menuname }}</span>
        </el-menu-item>
      </el-menu-item-group>
    </el-submenu>
  </el-menu>
</template>
<script>
// import { menu } from '../api/userMG'
import { req } from "@/api/axiosFun";
export default {
  name: "leftnav",
  data() {
    return {
      collapsed: false,
      allmenu: [],
    };
  },
  // 创建完毕状态(里面是操作)
  created() {
    req("post", "/SysAdmin/GetMenu?token="+this.$jsutils.sessionget("token"), {
    }).then((res) => {
      if (res.success) {
        this.allmenu = res.data;

        //动态配置路由
        let children = [];
        getchildren(res.data, children);
        if (
          this.$router.options.routes.filter((x) => {
            return x.name == "首页";
          }).length > 0
        ) {
          let lis = this.$router.options.routes.filter((x) => {
            return x.name == "首页";
          });
            lis[0].children =[];
          lis[0].children = children;
        }
        this.$router.addRoutes(this.$router.options.routes);
      } else {
        if (!res.islogin) {
          this.$router.push({ path: "/" });
          return false;
        }
        this.$message.error(res.data);
        this.logining = false;
        return false;
      }
    });

    this.$root.Bus.$on("toggle", (value) => {
      this.collapsed = !value;
    });
  },
};

//生成菜单路由
function getchildren(data, children) {
  data.forEach((x) => {
    if (x.type == "expand") {
      getchildren(x.menus, children);
    } else {
      let path = {
        path: x.url,
        name: x.menuname,
        component: () => import(`@/views${x.url}.vue`),
        meta: {
          requireAuth: true,
          btns:x.btnlis,
        },
      };
      children.push(path);
    }
  });
}
</script>
<style>
.el-menu-vertical-demo:not(.el-menu--collapse) {
  width: 240px;
  min-height: 400px;
}
.el-menu-vertical-demo:not(.el-menu--collapse) {
  border: none;
  text-align: left;
}
.el-menu-item-group__title {
  padding: 0px;
}
.el-menu-bg {
  background-color: #1f2d3d !important;
}
.el-menu {
  border: none;
}
.logobox {
  height: 40px;
  line-height: 40px;
  color: #9d9d9d;
  font-size: 20px;
  text-align: center;
  padding: 20px 0px;
}
.logoimg {
  height: 40px;
}
</style>